package com.lottemall.item.pojo;

//import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import tk.mybatis.mapper.annotation.KeySql;

import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
//import javax.persistence.Transient;
import java.util.Date;
import java.util.List;
//import java.util.List;

/**
 * spu表，该表描述的是一个抽象性的商品，比如 iphone8
 */
@Table(name = "tb_spu")
@Data
public class Spu {
    @Id
    @KeySql(useGeneratedKeys = true)
    private Long id;
    private String title; //标题
    private String subTitle; //子标题
    private Long cid1; //一级类目
    private Long cid2;
    private Long cid3;
    private Long brandId; //抽象商品所属品牌id
    private Boolean saleable; // 是否上架，0下架，1上架(T　F)
    @JsonIgnore //不想返回这个json字段
    private Boolean valid; //是否有效，0已删除，1有效 (T F)
    private Date createTime; //添加时间
    @JsonIgnore
    private Date lastUpdateTime; //最后修改时间


    //______________________________________为了符合前台新增商品传到后台的json信息符合匹配
    //spu所属的分类名称
    //由于页面需要的是分类的名称
    // 由于Po是持久层对象，实际开发是要和数据库中的表字段对应的
    //理论上应该写个SpuVo,需要返回给前台的那些字段就只写哪些字段在那个Vo中，同时也是防止别人拦截到json字符串从而得知到我们的表结构
    //但是由于查出来的是po,我们还有转成Vo,而且将来页面得到Vo，又要转成Po才能到数据库，有各种对象的转换这是很麻烦的，正式开法中都会这样做
    //这里只是为了迅速开发
    @Transient //这个注解是为了提醒mapper这个不是数据库字段，否则会有一些错误
    private String cname;

    //spu所属品牌名
    @Transient
    private String bname;

    //spu详情
    @Transient
    private SpuDetail spuDetail;

    //sku集合
    @Transient
    private List<Sku> skus;
    //______________________________________为了符合前台新增商品传到后台的json信息符合匹配
}
